import openpyxl
from openpyxl.styles import PatternFill, Font
from openpyxl.utils import get_column_letter


def highlight_colored_columns(input_file, output_file):
    """
    读取Excel文件，标记包含带颜色单元格的列名

    参数：
        input_file: 输入Excel文件路径
        output_file: 输出Excel文件路径
    """
    # 加载工作簿
    wb = openpyxl.load_workbook(input_file)

    # 定义黄色填充样式
    yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
    bold_font = Font(bold=True)

    for sheet_name in wb.sheetnames:
        ws = wb[sheet_name]

        # 获取第一行（列名行）
        header_row = ws[1]

        # 检查每一列
        for col_idx, header_cell in enumerate(header_row, 1):
            has_colored_cell = False

            # 检查该列所有单元格（从第二行开始）
            for row in ws.iter_rows(min_row=2, min_col=col_idx, max_col=col_idx):
                cell = row[0]

                # 检查单元格是否有填充色（排除默认无填充）
                if cell.fill.start_color.index != '00000000' and cell.fill.fill_type is not None:
                    has_colored_cell = True
                    break

            # 如果列中有带颜色的单元格，标记列名
            if has_colored_cell:
                header_cell.fill = yellow_fill
                header_cell.font = bold_font

    # 保存结果
    wb.save(output_file)
    print(f"处理完成，结果已保存到: {output_file}")


if __name__ == "__main__":
    # 使用示例
    input_excel = "input.xlsx"  # 替换为你的输入文件路径
    output_excel = "output.xlsx"  # 替换为你的输出文件路径

    highlight_colored_columns(input_excel, output_excel)